/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * PainelAula.java
 *
 * Created on 20/11/2009, 19:46:21
 */

package agendaBD;

import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.text.BadLocationException;

/**
 *
 * @author Sueli
 */
public class PainelAula extends javax.swing.JPanel {

    private boolean editando = false;
    private boolean criando = false;

    /** Creates new form PainelAula */
    public PainelAula() {
        initComponents();
        this.pnlApresentacaoOuProva.setVisible(false);
        listaAulas();
        cmbDisciplina.setSelectedIndex(-1);
    }

    private void listaAulas()
    {
        ResultSet resultado;
        try
        {
            resultado = Conexao.getInstance().consultar("select data, horário from aulas order by data,horário");


            String [] todasAulas;

            int i;

            if(resultado.last())
            {
                todasAulas = new String[resultado.getRow()];

                resultado.beforeFirst();

                for(i=0; resultado.next(); i++)
                {
                    todasAulas[i] = resultado.getDate(1).toString()+", "+resultado.getString(2);
                }
            }

            else
                todasAulas = new String[0];

            lstAulas.setListData(todasAulas);

        }
        catch (Exception ex)
        {
            Logger.getLogger(PainelAula.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        pnlHead = new javax.swing.JPanel();
        lblAulas = new javax.swing.JLabel();
        lblDescCabecalho = new javax.swing.JLabel();
        icoAulas = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        btnNovaAula = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        lstAulas = new javax.swing.JList();
        jPanel2 = new javax.swing.JPanel();
        txtData = new javax.swing.JFormattedTextField();
        lblData = new javax.swing.JLabel();
        lblHorario = new javax.swing.JLabel();
        txtHorario = new javax.swing.JFormattedTextField();
        btnEditar = new javax.swing.JButton();
        btnExcluir = new javax.swing.JButton();
        lblDisciplina = new javax.swing.JLabel();
        txtDisiciplina = new javax.swing.JTextField();
        cmbDisciplina = new javax.swing.JComboBox();
        cbxApresentacao = new javax.swing.JCheckBox();
        cbxProva = new javax.swing.JCheckBox();
        pnlApresentacaoOuProva = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        txtGrupoExpectativa = new javax.swing.JTextArea();
        lblGrupoExpectativa = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        txtConteudo = new javax.swing.JTextArea();
        lblConteudo = new javax.swing.JLabel();
        txtPeso = new javax.swing.JFormattedTextField();
        lblPeso = new javax.swing.JLabel();

        pnlHead.setBackground(new java.awt.Color(255, 255, 255));
        pnlHead.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 20, 1, 20));
        pnlHead.setPreferredSize(new java.awt.Dimension(100, 50));
        pnlHead.setLayout(new java.awt.GridBagLayout());

        lblAulas.setText("AULAS");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 0.8;
        pnlHead.add(lblAulas, gridBagConstraints);

        lblDescCabecalho.setFont(new java.awt.Font("Monospaced", 0, 10));
        lblDescCabecalho.setText("Listar, adicionar, editar e excluir aulas.");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.ipadx = 20;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
        pnlHead.add(lblDescCabecalho, gridBagConstraints);

        icoAulas.setIcon(new javax.swing.ImageIcon(getClass().getResource("/agendaBD/imagens/Mario Hat2.png"))); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridheight = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        pnlHead.add(icoAulas, gridBagConstraints);

        btnNovaAula.setText("Nova Aula");
        btnNovaAula.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovaAulaActionPerformed(evt);
            }
        });

        lstAulas.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                lstAulasMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(lstAulas);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 154, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(btnNovaAula, javax.swing.GroupLayout.DEFAULT_SIZE, 150, Short.MAX_VALUE)
                        .addGap(14, 14, 14))))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(btnNovaAula)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 530, Short.MAX_VALUE))
        );

        txtData.setEditable(false);
        try {
            txtData.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("####-##-##")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }

        lblData.setText("Data (aaaa-mm-dd)");

        lblHorario.setText("Horário (hh:mm)");

        txtHorario.setEditable(false);
        try {
            txtHorario.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##:##")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }

        btnEditar.setText("Editar");
        btnEditar.setEnabled(false);
        btnEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEditarActionPerformed(evt);
            }
        });

        btnExcluir.setText("Excluir");
        btnExcluir.setEnabled(false);
        btnExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExcluirActionPerformed(evt);
            }
        });

        lblDisciplina.setText("Disciplina");

        txtDisiciplina.setEditable(false);

        cmbDisciplina.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmbDisciplinaActionPerformed(evt);
            }
        });

        cbxApresentacao.setText("É uma apresentação");
        cbxApresentacao.setEnabled(false);
        cbxApresentacao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxApresentacaoActionPerformed(evt);
            }
        });

        cbxProva.setText("É uma prova");
        cbxProva.setEnabled(false);
        cbxProva.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxProvaActionPerformed(evt);
            }
        });

        txtGrupoExpectativa.setColumns(20);
        txtGrupoExpectativa.setEditable(false);
        txtGrupoExpectativa.setRows(5);
        jScrollPane3.setViewportView(txtGrupoExpectativa);

        lblGrupoExpectativa.setText("Grupo");

        txtConteudo.setColumns(20);
        txtConteudo.setEditable(false);
        txtConteudo.setRows(5);
        jScrollPane2.setViewportView(txtConteudo);

        lblConteudo.setText("Conteúdo a ser cobrado");

        txtPeso.setEditable(false);
        txtPeso.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(java.text.NumberFormat.getIntegerInstance())));

        lblPeso.setText("Peso da Atividade (%)");

        javax.swing.GroupLayout pnlApresentacaoOuProvaLayout = new javax.swing.GroupLayout(pnlApresentacaoOuProva);
        pnlApresentacaoOuProva.setLayout(pnlApresentacaoOuProvaLayout);
        pnlApresentacaoOuProvaLayout.setHorizontalGroup(
            pnlApresentacaoOuProvaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlApresentacaoOuProvaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlApresentacaoOuProvaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlApresentacaoOuProvaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(txtPeso, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(lblPeso, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlApresentacaoOuProvaLayout.createSequentialGroup()
                        .addGroup(pnlApresentacaoOuProvaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblConteudo))
                        .addGap(18, 18, 18)
                        .addGroup(pnlApresentacaoOuProvaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lblGrupoExpectativa)
                            .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(78, Short.MAX_VALUE))
        );
        pnlApresentacaoOuProvaLayout.setVerticalGroup(
            pnlApresentacaoOuProvaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlApresentacaoOuProvaLayout.createSequentialGroup()
                .addGroup(pnlApresentacaoOuProvaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlApresentacaoOuProvaLayout.createSequentialGroup()
                        .addGap(74, 74, 74)
                        .addComponent(lblConteudo))
                    .addGroup(pnlApresentacaoOuProvaLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(pnlApresentacaoOuProvaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(pnlApresentacaoOuProvaLayout.createSequentialGroup()
                                .addComponent(lblGrupoExpectativa)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(pnlApresentacaoOuProvaLayout.createSequentialGroup()
                                .addComponent(lblPeso)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(txtPeso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(38, 38, 38)
                                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                .addContainerGap(38, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(lblDisciplina)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtDisiciplina, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(414, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addComponent(cbxApresentacao)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 49, Short.MAX_VALUE)
                        .addComponent(cbxProva)
                        .addGap(310, 310, 310))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(cmbDisciplina, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
                                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(lblData)
                                    .addComponent(txtData, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(44, 44, 44)
                                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(lblHorario)
                                    .addComponent(txtHorario, javax.swing.GroupLayout.PREFERRED_SIZE, 152, javax.swing.GroupLayout.PREFERRED_SIZE))))
                        .addContainerGap(223, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addComponent(btnEditar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnExcluir)
                        .addGap(32, 32, 32))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(pnlApresentacaoOuProva, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(lblData)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(lblHorario)
                        .addGroup(jPanel2Layout.createSequentialGroup()
                            .addGap(21, 21, 21)
                            .addComponent(txtHorario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGap(39, 39, 39)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblDisciplina)
                    .addComponent(txtDisiciplina, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(cmbDisciplina, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(45, 45, 45)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cbxApresentacao)
                    .addComponent(cbxProva))
                .addGap(18, 18, 18)
                .addComponent(pnlApresentacaoOuProva, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnEditar)
                    .addComponent(btnExcluir))
                .addContainerGap(67, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(pnlHead, javax.swing.GroupLayout.DEFAULT_SIZE, 761, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(pnlHead, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
        );
    }// </editor-fold>//GEN-END:initComponents

    private void cbxApresentacaoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxApresentacaoActionPerformed
        // TODO add your handling code here:

        if(this.cbxApresentacao.isSelected())
        {
            this.cbxProva.setSelected(false);
            this.lblGrupoExpectativa.setText("Grupo");
            this.pnlApresentacaoOuProva.setVisible(true);
        }

        else
        {
            if(!this.cbxProva.isSelected())
                this.pnlApresentacaoOuProva.setVisible(false);
        }
    }//GEN-LAST:event_cbxApresentacaoActionPerformed

    private void cbxProvaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxProvaActionPerformed
        // TODO add your handling code here:

        if(this.cbxProva.isSelected())
        {
            this.cbxApresentacao.setSelected(false);
            this.lblGrupoExpectativa.setText("Expectativa");
            this.pnlApresentacaoOuProva.setVisible(true);
        }

        else
        {
            if(!this.cbxApresentacao.isSelected())
                this.pnlApresentacaoOuProva.setVisible(false);
        }
    }//GEN-LAST:event_cbxProvaActionPerformed

    private void cmbDisciplinaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbDisciplinaActionPerformed
        // TODO add your handling code here:

        if(this.cmbDisciplina.getSelectedIndex() != -1)
        {
             this.txtDisiciplina.setText(this.cmbDisciplina.getSelectedItem().toString().split(" - ")[0]);
        }
    }//GEN-LAST:event_cmbDisciplinaActionPerformed

    private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarActionPerformed
        // TODO add your handling code here:

        if(!editando && !criando)
        {
            vouEditar();
        }

        else
        {
            if(editando)
                salvaEdicao();
            else
                salvaCriacao();
        }

    }//GEN-LAST:event_btnEditarActionPerformed

    private void btnNovaAulaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovaAulaActionPerformed
        // TODO add your handling code here:

        criando = true;
        limpaCampos();
        
         try
        {
            //lista disciplinas cadastradas
            ResultSet resultado = Conexao.getInstance().consultar("select código,nome from disciplinas");

            int i=0;

            cmbDisciplina.removeAllItems();

            //insere nomes das disciplinas na listagem
            if(resultado.last())
            {
                resultado.beforeFirst();

                for(; resultado.next(); i++)
                {
                    cmbDisciplina.insertItemAt(resultado.getInt(1)+" - "+resultado.getString(2), i);
                }

            }
        }

        catch (Exception ex)
        {
            Logger.getLogger(PainelAula.class.getName()).log(Level.SEVERE, null, ex);
        }

        if(editando)
        {
            editando = false;

            this.cbxApresentacao.setSelected(false);
            this.cbxProva.setSelected(false);
            
            this.pnlApresentacaoOuProva.setVisible(false);
        }

        else
        {
            this.btnEditar.setText("OK");
            this.btnExcluir.setText("Cancelar");
            this.btnEditar.setEnabled(true);
            this.btnExcluir.setEnabled(true);

            this.cbxApresentacao.setEnabled(true);
            this.cbxProva.setEnabled(true);
            this.txtConteudo.setEditable(true);
            this.txtData.setEditable(true);
            this.cmbDisciplina.setVisible(true);
            this.txtGrupoExpectativa.setEditable(true);
            this.txtHorario.setEditable(true);
            this.txtPeso.setEditable(true);

            this.cbxApresentacao.setSelected(false);
            this.cbxProva.setSelected(false);

            this.pnlApresentacaoOuProva.setVisible(false);
        }
    }//GEN-LAST:event_btnNovaAulaActionPerformed

    private void lstAulasMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstAulasMouseClicked
        // TODO add your handling code here:

        //exibe item
    if(!lstAulas.isSelectionEmpty())
    {
        criando = false;
        editando= false;

        this.btnEditar.setText("Editar");
        this.btnExcluir.setText("Excluir");
        this.btnEditar.setEnabled(true);
        this.btnExcluir.setEnabled(true);

        this.cbxApresentacao.setEnabled(false);
        this.cbxProva.setEnabled(false);
        
        this.txtConteudo.setEditable(false);
        this.txtData.setEditable(false);
        this.cmbDisciplina.setVisible(false);
        this.txtGrupoExpectativa.setEditable(false);
        this.txtHorario.setEditable(false);
        this.txtPeso.setEditable(false);
        this.cbxProva.setSelected(false);
        this.cbxApresentacao.setSelected(false);
        this.pnlApresentacaoOuProva.setVisible(false);
        
        limpaCampos();

        try
        {
            ResultSet resultado;

                
            txtData.setText(lstAulas.getSelectedValue().toString().split(",")[0]);
            txtHorario.setText(lstAulas.getSelectedValue().toString().split(", ")[1]);

            resultado = Conexao.getInstance().consultar("select disc_código from aulas where data = " +
                    "to_date('" + txtData.getText() + "','yyyy-mm-dd') AND "+
                    "horário ='"+txtHorario.getText()+"'");

            if(resultado.last())
            {
                resultado.beforeFirst();
                resultado.next();
                txtDisiciplina.setText(resultado.getString(1));
            }
            
            resultado = Conexao.getInstance().consultar("select grupo,peso,conteúdo from apresentações where data = " +
                    "to_date('" + txtData.getText() + "','yyyy-mm-dd') AND "+
                    "horário ='"+txtHorario.getText()+"'");
            
            if(resultado.last())
            {
                resultado.beforeFirst();
                resultado.next();
                txtGrupoExpectativa.setText(resultado.getString(1));
                txtPeso.setText(resultado.getString(2));
                txtConteudo.setText(resultado.getString(3));
                
                this.pnlApresentacaoOuProva.setVisible(true);
                this.cbxApresentacao.setSelected(true);
                this.lblGrupoExpectativa.setText("Grupo");
            }

            else
            {
                resultado = Conexao.getInstance().consultar("select expectativa,peso,conteúdo from provas where data = " +
                    "to_date('" + txtData.getText() + "','yyyy-mm-dd') AND "+
                    "horário ='"+txtHorario.getText()+"'");

                if(resultado.last())
                {
                    resultado.beforeFirst();
                    resultado.next();
                    txtGrupoExpectativa.setText(resultado.getString(1));
                    txtPeso.setText(resultado.getString(2));
                    txtConteudo.setText(resultado.getString(3));

                    this.pnlApresentacaoOuProva.setVisible(true);
                    this.cbxProva.setSelected(true);
                    this.lblGrupoExpectativa.setText("Expectativa");
                }
            }
        }
        
        catch (Exception ex)
        {
                Logger.getLogger(PainelAula.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    }//GEN-LAST:event_lstAulasMouseClicked

    private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExcluirActionPerformed
        // TODO add your handling code here:

    if(editando || criando) //cancelar
    {
        pnlApresentacaoOuProva.setVisible(false);
        
        if(criando)
        {
            limpaCampos();
            btnEditar.setEnabled(false);
            btnExcluir.setEnabled(false);
        }

        else
        {
            this.lstAulasMouseClicked(null);
        }

        editando = false;
        criando = false;

        cmbDisciplina.setVisible(false);
        txtData.setEditable(false);
        txtHorario.setEditable(false);
        txtConteudo.setEditable(false);
        txtDisiciplina.setEditable(false);
        txtGrupoExpectativa.setEditable(false);
        txtPeso.setEditable(false);
        cbxApresentacao.setEnabled(false);
        cbxProva.setEnabled(false);
        btnEditar.setText("Editar");
        btnExcluir.setText("Excluir");
    }

    else //excluir
    {
        try
        {
            //excluir contato da tabela
            Conexao.getInstance().consultar("delete aulas where data = to_date('"+txtData.getText()+"','yyyy-mm-dd')"+
                    " AND horário ='"+txtHorario.getText()+"'");

            Conexao.getInstance().consultar("delete apresentações where data = to_date('" +txtData.getText()+"','yyyy-mm-dd')"+
                    " AND horário ='"+txtHorario.getText()+"'");

            Conexao.getInstance().consultar("delete provas where data = to_date('" +txtData.getText()+"','yyyy-mm-dd')"+
                    " AND horário ='"+txtHorario.getText()+"'");
            Conexao.getInstance().consultar("commit");

            listaAulas();
            limpaCampos();

           }

        catch (Exception ex)
        {
            Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    }//GEN-LAST:event_btnExcluirActionPerformed


    private void vouEditar()
    {
        editando = true;

        try
        {
            //lista disciplinas cadastradas
            ResultSet resultado = Conexao.getInstance().consultar("select código, nome from disciplinas");
            
            int i=0;

            cmbDisciplina.removeAllItems();

            //insere nomes das disciplinas na listagem
            if(resultado.last())
            {
                resultado.beforeFirst();

                for(; resultado.next(); i++)
                {
                    cmbDisciplina.insertItemAt(resultado.getString(1)+" - "+resultado.getString(2), i);
                }

            }
        }

        catch (Exception ex)
        {
            Logger.getLogger(PainelAula.class.getName()).log(Level.SEVERE, null, ex);
        }


        this.btnEditar.setText("OK");
        this.btnExcluir.setText("Cancelar");
        this.btnEditar.setEnabled(true);
        this.btnExcluir.setEnabled(true);

        this.cbxApresentacao.setEnabled(true);
        this.cbxProva.setEnabled(true);
        this.txtConteudo.setEditable(true);
        this.txtData.setEditable(true);
        this.cmbDisciplina.setVisible(true);
        this.txtGrupoExpectativa.setEditable(true);
        this.txtHorario.setEditable(true);
        this.txtPeso.setEditable(true);
    }


    private boolean testaDataHorario()
    {
        boolean validade = true;

        try
        {
            if(txtData.getText().contains(" "))
            {
                validade = false;
                JOptionPane.showMessageDialog(null,"Não foi possível salvar. Campo DATA está vazio.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
            }

            else if(txtHorario.getText().contains(" "))
            {
                validade = false;
                JOptionPane.showMessageDialog(null,"Não foi possível salvar. Campo HORÁRIO está vazio.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
            }

            else if(Integer.parseInt(txtData.getText(0,4)) == 0 || Integer.parseInt(txtData.getText(5,2)) > 12 || Integer.parseInt(txtData.getText(8,2)) > 31)
            {
                validade = false;
                JOptionPane.showMessageDialog(null,"Não foi possível salvar. Valor para DATA invalido.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
            }

            else if(Integer.parseInt(txtHorario.getText(0,2)) > 23 || Integer.parseInt(txtHorario.getText().substring(3)) > 59)
            {
                validade = false;
                JOptionPane.showMessageDialog(null,"Não foi possível salvar. Valor de HORÁRIO inválido.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
            }

            else
            {
                if(Integer.parseInt(txtData.getText(8,2)) > 30 && (Integer.parseInt(txtData.getText(5,2)) == 4 || Integer.parseInt(txtData.getText(5,2)) == 6 || Integer.parseInt(txtData.getText(5,2)) == 9 || Integer.parseInt(txtData.getText(5,2)) == 11))
                {
                    if(Integer.parseInt(txtData.getText(8,2)) > 30)
                    {
                        validade = false;
                        JOptionPane.showMessageDialog(null,"Não foi possível salvar. Valor para DATA invalido.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                    }
                }

                else if(Integer.parseInt(txtData.getText(5,2)) == 2)
                {
                    if(Integer.parseInt(txtData.getText(8,2)) > 28)
                    {
                        if(Integer.parseInt(txtData.getText(0,4))%4 != 0)
                        {
                            validade = false;
                            JOptionPane.showMessageDialog(null,"Não foi possível salvar. Valor para DATA invalido.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                        }

                        else if(Integer.parseInt(txtData.getText(8,2)) > 29)
                        {
                            validade = false;
                            JOptionPane.showMessageDialog(null,"Não foi possível salvar. Valor para DATA invalido.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                        }
                    }
                }
            }
        }

        catch (BadLocationException ex)
        {
            Logger.getLogger(PainelAula.class.getName()).log(Level.SEVERE, null, ex);
        }

        return validade;
    }


    @SuppressWarnings("static-access")
    private void salvaEdicao()
    {
        boolean valido = true;

        if(testaDataHorario())
        {
            if(txtDisiciplina.getText().isEmpty())
            {
                valido = false;
                JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo DISCIPLINA está vazio.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
            }

            else if(cbxApresentacao.isSelected() || cbxProva.isSelected())
            {
                if(txtPeso.getText().isEmpty())
                {
                    valido = false;
                    JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo PESO está vazio.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                }
                
                else if(txtConteudo.getText().length() > 30)
                {
                    valido = false;
                    JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo CONTEÚDO muito longo, deve ter no máximo 30 caracteres.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                }
                
                else if(txtGrupoExpectativa.getText().length() > 15)
                {
                    if(cbxProva.isSelected())
                    {
                        valido = false;
                        JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo EXPECTATIVA muito longo, deve ter no máximo 15 caracteres.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                    }

                    else if(txtGrupoExpectativa.getText().length() > 30)
                    {
                        valido = false;
                        JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo GRUPO muito longo, deve ter no máximo 30 caracteres.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                    }
                }
                
            }

            if(valido)
            {
                ResultSet resultado;

                try
                {
                    String dataAntiga = lstAulas.getSelectedValue().toString().split(", ")[0];
                    String horaAntiga = lstAulas.getSelectedValue().toString().split(", ")[1];

                    if(!(dataAntiga.compareTo(txtData.getText())==0 && horaAntiga.compareTo(txtHorario.getText())==0))
                    {
                        resultado = Conexao.getInstance().consultar("select horário from aulas where data = to_date('" + txtData.getText() + "','yyyy-mm-dd')");

                        if(resultado.last())
                        {
                            resultado.beforeFirst();
                            resultado.next();

                            if(resultado.getString(1).compareTo(txtHorario.getText()) == 0)
                            {
                                valido = false;
                                JOptionPane.showMessageDialog(null,"Não é possível cadastrar. Já existe uma aula cadastrada no mesmo dia e horário.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                            }
                        }
                    }

                    if(valido)
                        //salvo a edição
                    {
                        Conexao.getInstance().consultar("delete provas where " +
                                    "data = to_date('"+dataAntiga+"','yyyy-mm-dd')"+
                                    " AND horário ='"+horaAntiga+"'");

                        Conexao.getInstance().consultar("delete apresentações where " +
                                    "data = to_date('"+dataAntiga+"','yyyy-mm-dd')"+
                                    " AND horário ='"+horaAntiga+"'");

                        //insere em aulas
                        Conexao.getInstance().consultar("update aulas set " +
                                "horário ='" +txtHorario.getText()+"',"+
                                "data = to_date('" +txtData.getText()+"','yyyy-mm-dd'),"+
                                "disc_código="+txtDisiciplina.getText() +
                                " where data = to_date('"+dataAntiga+"','yyyy-mm-dd')"+
                                " AND horário ='"+horaAntiga+"'");

                        //insere em apresentações se for uma
                        if(cbxApresentacao.isSelected())
                        {
                           Conexao.getInstance().consultar("insert into apresentações values (" +
                                "'" +txtHorario.getText()+"',"+
                                "to_date('" +txtData.getText()+"','yyyy-mm-dd'),"+
                                "'"+txtGrupoExpectativa.getText()+"'," +
                                "'"+txtConteudo.getText()+"',"+
                                txtPeso.getText()+","+
                                txtDisiciplina.getText()+")");
                        }

                        //insere em provas se for uma
                        else if(cbxProva.isSelected())
                        {
                           Conexao.getInstance().consultar("insert into provas values (" +
                                "'" +txtHorario.getText()+"',"+
                                "to_date('" +txtData.getText()+"','yyyy-mm-dd'),"+
                                "'"+txtGrupoExpectativa.getText()+"'," +
                                txtPeso.getText()+","+
                                "'"+txtConteudo.getText()+"',"+
                                txtDisiciplina.getText()+")");
                        }


                        Conexao.getInstance().consultar("commit");

                        editando = false;

                        this.btnEditar.setText("Editar");
                        this.btnExcluir.setText("Excluir");
                        this.btnEditar.setEnabled(false);
                        this.btnExcluir.setEnabled(false);

                        this.cbxApresentacao.setEnabled(false);
                        this.cbxProva.setEnabled(false);
                        this.cbxApresentacao.setSelected(false);
                        this.cbxProva.setSelected(false);
                        this.txtConteudo.setEditable(false);
                        this.txtData.setEditable(false);
                        this.cmbDisciplina.setVisible(false);
                        this.txtGrupoExpectativa.setEditable(false);
                        this.txtHorario.setEditable(false);
                        this.txtPeso.setEditable(false);
                        this.pnlApresentacaoOuProva.setVisible(false);
                        cmbDisciplina.setSelectedIndex(-1);

                        limpaCampos();
                        listaAulas();
                    }

                }
                catch (Exception ex)
                {
                    Logger.getLogger(PainelAula.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }


    private void salvaCriacao()
    {
        boolean valido = true;

        if(testaDataHorario())
        {
            if(txtDisiciplina.getText().isEmpty())
            {
                valido = false;
                JOptionPane.showMessageDialog(null,"Não foi possível salvar. Campo DISCIPLINA está vazio.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
            }

            else if(cbxApresentacao.isSelected() || cbxProva.isSelected())
            {
                if(txtPeso.getText().isEmpty())
                {
                    valido = false;
                    JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo PESO está vazio.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                }

                else if(txtConteudo.getText().length() > 30)
                {
                    valido = false;
                    JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo CONTEÚDO muito longo, deve ter no máximo 30 caracteres.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                }

                else if(txtGrupoExpectativa.getText().length() > 15)
                {
                    if(cbxProva.isSelected())
                    {
                        valido = false;
                        JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo EXPECTATIVA muito longo, deve ter no máximo 15 caracteres.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                    }

                    else if(txtGrupoExpectativa.getText().length() > 30)
                    {
                        valido = false;
                        JOptionPane.showMessageDialog(null,"Não foi possível editar. Campo GRUPO muito longo, deve ter no máximo 30 caracteres.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                    }
                }
            }

            if(valido)
            {
                ResultSet resultado;

                try
                {
                    resultado = Conexao.getInstance().consultar("select horário from aulas where data = to_date('" + txtData.getText() + "','yyyy-mm-dd')");

                    if(resultado.last())
                    {
                        resultado.beforeFirst();
                        resultado.next();

                        if(resultado.getString(1).compareTo(txtHorario.getText()) == 0)
                        {
                            valido = false;
                            JOptionPane.showMessageDialog(null,"Não é possível cadastrar. Já existe uma aula cadastrada no mesmo dia e horário.","ATENÇÃO",JOptionPane.ERROR_MESSAGE);
                        }
                    }

                    if(valido)
                        //salvo a criação
                    {
                        criando = false;

                        Conexao.getInstance().consultar("insert into aulas "+
                                "(horário," +
                                "data," +
                                "disc_código) " +
                                "values " +
                                "('" +txtHorario.getText()+"',"+
                                "to_date('" +txtData.getText()+"','yyyy-mm-dd'),"+
                                txtDisiciplina.getText()+")");

                        //se prova
                        if(cbxProva.isSelected())
                        {
                           Conexao.getInstance().consultar("insert into provas values (" +
                                "'" +txtHorario.getText()+"',"+
                                "to_date('" +txtData.getText()+"','yyyy-mm-dd'),"+
                                "'"+txtGrupoExpectativa.getText()+"'," +
                                txtPeso.getText()+","+
                                "'"+txtConteudo.getText()+"',"+
                                txtDisiciplina.getText()+")");
                        }

                        //se apresentação
                        else if(cbxApresentacao.isSelected())
                        {
                            Conexao.getInstance().consultar("insert into apresentações values (" +
                                        "'" +txtHorario.getText()+"',"+
                                        "to_date('" +txtData.getText()+"','yyyy-mm-dd'),"+
                                        "'"+txtGrupoExpectativa.getText()+"'," +
                                        "'"+txtConteudo.getText()+"',"+
                                        txtPeso.getText()+","+
                                        txtDisiciplina.getText()+")");
                        }

                        Conexao.getInstance().consultar("commit");

                        this.btnEditar.setText("Editar");
                        this.btnExcluir.setText("Excluir");
                        this.btnEditar.setEnabled(false);
                        this.btnExcluir.setEnabled(false);

                        this.cbxApresentacao.setEnabled(false);
                        this.cbxProva.setEnabled(false);
                        this.cbxApresentacao.setSelected(false);
                        this.cbxProva.setSelected(false);
                        this.txtConteudo.setEditable(false);
                        this.txtData.setEditable(false);
                        this.cmbDisciplina.setVisible(false);
                        this.txtGrupoExpectativa.setEditable(false);
                        this.txtHorario.setEditable(false);
                        this.txtPeso.setEditable(false);
                        this.pnlApresentacaoOuProva.setVisible(false);
                        cmbDisciplina.setSelectedIndex(-1);

                        limpaCampos();
                        listaAulas();
                    }

                }
                catch (Exception ex)
                {
                    Logger.getLogger(PainelAula.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }


    private void limpaCampos()
    {
        txtConteudo.setText("");
        txtData.setText("");
        txtDisiciplina.setText("");
        txtGrupoExpectativa.setText("");
        txtHorario.setText("");
        txtPeso.setText("");
    }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnEditar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnNovaAula;
    private javax.swing.JCheckBox cbxApresentacao;
    private javax.swing.JCheckBox cbxProva;
    private javax.swing.JComboBox cmbDisciplina;
    private javax.swing.JLabel icoAulas;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JLabel lblAulas;
    private javax.swing.JLabel lblConteudo;
    private javax.swing.JLabel lblData;
    private javax.swing.JLabel lblDescCabecalho;
    private javax.swing.JLabel lblDisciplina;
    private javax.swing.JLabel lblGrupoExpectativa;
    private javax.swing.JLabel lblHorario;
    private javax.swing.JLabel lblPeso;
    private javax.swing.JList lstAulas;
    private javax.swing.JPanel pnlApresentacaoOuProva;
    private javax.swing.JPanel pnlHead;
    private javax.swing.JTextArea txtConteudo;
    private javax.swing.JFormattedTextField txtData;
    private javax.swing.JTextField txtDisiciplina;
    private javax.swing.JTextArea txtGrupoExpectativa;
    private javax.swing.JFormattedTextField txtHorario;
    private javax.swing.JFormattedTextField txtPeso;
    // End of variables declaration//GEN-END:variables

}
